<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script src="继承.js"></script>
  <script>
    // class Person {
    //   constructor() {
    //     this.name = '马少东'
    //   }
    //   eat() {
    //     console.log('orange')
    //   }
    //   static work() {

    //   }
    // }
    // console.log(Person.prototype)
    // let person = new Person()
    // console.log(person)

    // function foo() { }
    // console.log(foo.prototype)

    // Object.prototype.b = 2
    // const obj = { a: 1 };
    // console.log('constructor' in obj)
    // console.log(obj)
    // console.log(Object.prototype)
    // for (let i in obj) {
    //   console.log(obj[i])
    // }

    // const ArrPush = Array.prototype.push;

    // Array.prototype.push = function () {
    //   console.log('马少东是一个好人')
    //   ArrPush.apply(this, arguments)
    // };

    // let a = [1];
    // a.push(2);
    // console.log(a)


    // es5继承
    // function Teacher() {
    //   this.food = 'apple';
    // }
    // Teacher.prototype.info = {
    //   name: '李莹',
    //   age: 18
    // }

    // let teacher = new Teacher()

    // function Student() {
    //   this.food = 'orange'
    // }

    // function Buffer() { }
    // Buffer.prototype = Teacher.prototype;
    // console.log(new Buffer())

    // Student.prototype = new Buffer();
    // // 可以继承Teacher的info，也可自己去实现
    // Student.prototype.info = {
    //   name: '马少东'
    // }

    // let student = new Student();
    // console.log(teacher)
    // console.log(student)






    // const obj = { a: 1, b: 2, c: 3 };
    // console.log(Object.getOwnPropertyDescriptors(obj));
    
    // const obj = { a: 1, b: 2, c: 3 };

    // Object.prototype.cccc = 'cccc';
    // const arr = [];
    // for (let key in obj) {
    //   arr.push(key);
    // }

    // Object.defineProperty(obj, 'a', {
    //   enumerable: false
    // })

    // console.log(arr)   // 自身和原型上可枚举和不可枚举属性
    // console.log(Object.keys(obj)) // 自身可枚举属性
    // console.log(Object.getOwnPropertyNames(obj))  // 自身可枚和不可枚举属性

    // const arr2 = [];
    // const arr3 = Object.entries(obj); // 自身可枚举属性
    // for (let i of arr3) {
    //   arr2.push(i[0])
    // }
    // console.log(arr2)
  </script>
</body>

</html>